//
//  HRMessageToolBar.h
//  Hear
//
//  Created by mac on 2017/7/4.
//  Copyright © 2017年 mac. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "HRMeeageRecordView.h"
#import "EaseFaceView.h"
#import "EaseTextView.h"
#import "EaseChatBarMoreView.h"
#import "HRRecordBottomView.h"

#define paddingLeft  15
#define buttonFrame  40

#define buttonMagin  (kFullWidth - paddingLeft*2 - buttonFrame*5)/4
#define buttonY  10



#define kInputTextViewMinHeight (36+buttonFrame+buttonY*2)
#define kInputTextViewMaxHeight 100
#define kHorizontalPadding 8
#define kVerticalPadding 8

#define kTouchToRecord @"按住说话"
#define kTouchToFinish @"松开发送"

typedef enum
{
    /**
     *  默认，含有语音的，用于聊天界面
     */
    DXKeyboardTypeVoice=0,
    /**
     *  不含拍照和照片，用于评论帖子
     */
    DXKeyboardTypeNoPhoto,
    /**
     *  没有输入框，用在发表帖子界面
     */
    DXKeyboardTypeNoTextViewInput,
    
    /**
     *  没有输入框，但是有语音
     */
    DXKeyboardTypeVoiceAndNoTextViewInput,
    //    聊天和聊天室
    DXKeyboardTypeChat
    
    
}DXKeyboardType;

@protocol HRMessageToolBarDelegate;

@interface HRMessageToolBar : UIView

@property (nonatomic,copy) NSString *placeHolder;


@property (nonatomic, weak) id <HRMessageToolBarDelegate> delegate;
/**
 *  录音的附加页面
 */
@property (strong, nonatomic) HRRecordBottomView *recordView;



/**
 *  用于输入文本消息的输入框
 */
@property (strong, nonatomic) EaseTextView *inputTextView;


/**
 *  操作栏背景图片
 */
@property (strong, nonatomic) UIImage *toolbarBackgroundImage;

/**
 *  背景图片
 */
@property (strong, nonatomic) UIImage *backgroundImage;

/**
 *  更多的附加页面
 */
@property (strong, nonatomic) UIView *moreView;

/**
 *  表情的附加页面
 */
@property (strong, nonatomic) UIView *faceView;



/**
 *  文字输入区域最大高度，必须 > KInputTextViewMinHeight(最小高度)并且 < KInputTextViewMaxHeight，否则设置无效
 */
@property (nonatomic) CGFloat maxTextInputViewHeight;

/**
 *  初始化方法
 *
 *  @param frame      位置及大小
 *
 *  @return DXMessageToolBar
 */
- (instancetype)initWithFrame:(CGRect)frame;

/**
 *    初始化方法
 *
 *  @param frame        位置及大小
 *  @param keyboardType 键盘类型
 *
 *  @return DXMessageToolBar
 */
- (instancetype)initWithFrame:(CGRect)frame keyboardType:(DXKeyboardType)keyboardType;


/**
 *  默认高度
 *
 *  @return 默认高度
 */
+ (CGFloat)defaultHeight;

/**
 *  只有输入框时的高度  36
 *
 *  @return return value description
 */
+(CGFloat)defaultInputTextViewHeight;

/**
 *  取消触摸录音键
 */
- (void)cancelTouchRecord;

@end

@protocol HRMessageToolBarDelegate <NSObject>

@optional

/**
 *  在普通状态和语音状态之间进行切换时，会触发这个回调函数
 *
 *  @param changedToRecord 是否改为发送语音状态
 */
- (void)didStyleChangeToRecord:(BOOL)changedToRecord;

///**
// *  点击“表情”按钮触发
// *
// *  @param isSelected 是否选中。YES,显示表情页面；NO，收起表情页面
// */
//- (void)didSelectedFaceButton:(BOOL)isSelected;
//
///**
// *  点击“更多”按钮触发
// *
// *  @param isSelected 是否选中。YES,显示更多页面；NO，收起更多页面
// */
//- (void)didSelectedMoreButton:(BOOL)isSelected;

/**
 *  文字输入框开始编辑
 *
 *  @param inputTextView 输入框对象
 */
- (void)inputTextViewDidBeginEditing:(EaseTextView *)messageInputTextView;

/**
 *  文字输入框将要开始编辑
 *
 *  @param inputTextView 输入框对象
 */
- (void)inputTextViewWillBeginEditing:(EaseTextView *)messageInputTextView;

/**
 *  发送文字消息，可能包含系统自带表情
 *
 *  @param text 文字消息
 */
- (void)didSendText:(NSString *)text;

/**
 *  发送第三方表情，不会添加到文字输入框中
 *
 *  @param faceLocalPath 选中的表情的本地路径
 */
- (void)didSendFace:(NSString *)faceLocalPath;

/**
 *  按下录音按钮开始录音
 */
- (void)didStartRecordingVoiceAction:(UIView *)recordView;
/**
 *  手指向上滑动取消录音
 */
- (void)didCancelRecordingVoiceAction:(UIView *)recordView;
/**
 *  松开手指完成录音
 */
-(void)didFinishRecoingVoiceAction:(UIView *)recordView andRecordPath:(NSString *)recordPath andDuration:(NSInteger)aDuration;
/**
 *  当手指离开按钮的范围内时，主要为了通知外部的HUD
 */
- (void)didDragOutsideAction:(UIView *)recordView;
/**
 *  当手指再次进入按钮的范围内时，主要也是为了通知外部的HUD
 */
- (void)didDragInsideAction:(UIView *)recordView;

/**
 *  选择相片
 */
-(void)didSelectPhoto;

/**
 *  选择视频
 */
-(void)didSelectVideo;

-(void)didSendLoation;



-(void)didSelectOpen:(BOOL)isOpen;


-(void)didSelectTag;


-(void)didSelectButton:(BOOL)isSelect;



@required
/**
 *  高度变到toHeight
 */
- (void)didChangeFrameToHeight:(CGFloat)toHeight;


@end
